「Rust放弃指南」 您所在的位置:网站首页 rust 编译速度 「Rust放弃指南」

「Rust放弃指南」

2022-09-12 10:54| 来源: 网络整理| 查看: 265

0 分享至

用微信扫码二维码

分享至好友和朋友圈

Rust是一门内存安全的语言,也可以玩不安全的【unsafe】,而且能玩好unsafe才是高手。

简介

Actix-web的作者,因为使用unsafe语法,被github上的rust友军一顿猛喷,心灰意冷退出开源界,以致在互联网论坛掀起一片惊愕和哗然。

不安全的Rust - Unsafe触手

Rust编译器自带内存使用安全检测,只要不使用unsafe,Rust可以向你保证——只要编译通过,就不会产生悬空指针等一系列内存安全问题。

但是,事无绝对啊,上天有好生之德,总会留下一线生机,那就是unsafe这个语法了,请看代码:

使用unsafe直接操作指针,实现vector向量的插入功能,只不过我们需要把代码放在unsafe这个代码块中,所有涉及到原生指针的操作,都必须放在这样一个代码块里,并且由用户自己来保证指针的使用是安全的,Rust编译器将不会对该代码块中的代码进行内存安全检测。

这样就会留下一些隐患,比如提供三方代码库的人,恶意的使用unsafe语法,制造某些情况下才会发生的内存泄露,而使用该库的人是不知道的,那么这将会是一个很大的安全漏洞。正因为如此,才会让使用Rust三方代码库的人十分厌恶带有unsafe标识的三方库。

但是,使用unsafe有时候可以提升代码的性能,正常情况下需要套娃很多层的代码,使用unsafe直接在指针层面搞定了,节省了很多弯路,当然这是不被官方允许的。而Actix-web的作者为了提升框架的跑分性能,使用unsafe去走捷径,当然会被看作是异类,是破坏Rust安全的罪魁祸首了。

Actix-web的作者也做了澄清,说有unsafe的代码没有暴露给用户使用,并不会导致UB啦,你们这是在吹毛求疵,甚至一气之下关闭了issue。

是非对错,没有什么好争辩的,毕竟学Rust的人都是从其他语言过来的,他们身上都带有固有的思维,学C和C++的人会情不自禁的想玩玩unsafe,这是程序员鄙视链最高端的玩家的象征啊。

总结

这里只是Rust语言语法层面的冰山一角,当你觉得你已经学会Rust的时候,你才发现1000个台阶,你仅仅只迈开了第【三】步。

-- 走过路过,三连走起,喜欢的点个关注哈,谢谢!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

/阅读下一篇/ 返回网易首页 下载网易新闻客户端


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有